package com.meituan.sdk.model.pms.reservation.changeStay;

import com.meituan.sdk.annotations.ApiMeta;
import java.util.List;
import com.google.gson.reflect.TypeToken;
import javax.validation.constraints.NotBlank;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;

/**
* 续住或提前离店
* This file was automatically generated.
*/
@ApiMeta(
    path = "/pms/reservation/changeStay",
    businessId = 57,
    apiVersion = "10032",
    apiName = "change_stay",
    needAuth = true
)
public class ChangeStayRequest implements MeituanRequest<ChangeStayResponse> {
    /**
    * <p data-diff-id="ct-diff-id-94d10458-f6b3-4fb3-bea4-1755b3cfd559">酒店ID</p>
    */
    @NotNull(message = "hotelId不能为空")
    @SerializedName("hotelId")
    private Long hotelId;
    /**
    * <p data-diff-id="ct-diff-id-e7821cf4-2ff3-4b5f-90a1-a0ce4696ac62">接待单ID</p>
    */
    @NotNull(message = "checkinId不能为空")
    @SerializedName("checkinId")
    private Long checkinId;
    /**
    * <p data-diff-id="ct-diff-id-0b0db197-64c5-44cd-a6e0-05fe2e54fb12">新的离店日期，日期格式yyyy-MM-dd HH:mm:ss</p>
    */
    @NotBlank(message = "newDepartureTime不能为空")
    @SerializedName("newDepartureTime")
    private String newDepartureTime;
    /**
    * <p data-diff-id="ct-diff-id-94ac0174-9182-47e1-8085-5cee471e4ec8">续住策略，Market代表实时售价,LastDay代表最后一日</p>
    */
    @NotBlank(message = "changeStayPolicy不能为空")
    @SerializedName("changeStayPolicy")
    private String changeStayPolicy;
    /**
    * <p data-diff-id="ct-diff-id-0b7d21dd-0189-4c0a-be94-996c565758c8">续住备注</p>
    */
    @SerializedName("memo")
    private String memo;
    /**
    * <p data-diff-id="ct-diff-id-6a842f8e-6bcf-4c22-9124-77684feb8e77">一同续住的接待单ID</p>
    */
    @SerializedName("shareWithCheckinIds")
    private List<Long> shareWithCheckinIds;

    public Long getHotelId() {
        return hotelId;
    }
    public void setHotelId(Long hotelId) {
        this.hotelId = hotelId;
    }
    public Long getCheckinId() {
        return checkinId;
    }
    public void setCheckinId(Long checkinId) {
        this.checkinId = checkinId;
    }
    public String getNewDepartureTime() {
        return newDepartureTime;
    }
    public void setNewDepartureTime(String newDepartureTime) {
        this.newDepartureTime = newDepartureTime;
    }
    public String getChangeStayPolicy() {
        return changeStayPolicy;
    }
    public void setChangeStayPolicy(String changeStayPolicy) {
        this.changeStayPolicy = changeStayPolicy;
    }
    public String getMemo() {
        return memo;
    }
    public void setMemo(String memo) {
        this.memo = memo;
    }
    public List<Long> getShareWithCheckinIds() {
        return shareWithCheckinIds;
    }
    public void setShareWithCheckinIds(List<Long> shareWithCheckinIds) {
        this.shareWithCheckinIds = shareWithCheckinIds;
    }


    @Override
    public MeituanResponse<ChangeStayResponse> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<ChangeStayResponse>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "ChangeStayRequest{" + "hotelId=" + hotelId + "," + "checkinId=" + checkinId + "," + "newDepartureTime=" + newDepartureTime + "," + "changeStayPolicy=" + changeStayPolicy + "," + "memo=" + memo + "," + "shareWithCheckinIds=" + shareWithCheckinIds + "}";
    }
}
